#ifndef QQMUSIC_H
#define QQMUSIC_H
#include"volumetool.h"
#include <QWidget>
#include<QFileDialog>
#include"musiclist.h"
#include <QMediaPlayer>
#include <QMediaPlaylist>
#include"commonpage.h"
#include "lrcpage.h"
#include"lrcpage.h"
#include <QSqlDatabase>
#include<QMessageBox>
#include<QSqlError>
#include<QSqlQuery>
#include<QSystemTrayIcon>
#include<QMenu>
QT_BEGIN_NAMESPACE
namespace Ui { class QQMusic; }
QT_END_NAMESPACE

class QQMusic : public QWidget
{
    Q_OBJECT

public:
    void initPlayer();
    QQMusic(QWidget *parent = nullptr);
    ~QQMusic();
    void InitUi();
    void connectSignalAndslots();
    QJsonArray randomPiction();
    void onPlayStateChanged(); // 播放按钮
    void onPlayUpCliked(); // 上⼀曲
    void onPlayDownCliked(); // 下⼀曲
    void onPlaybackModeChanged(QMediaPlaylist::PlaybackMode playbackMode);
    void onPlaybackModeCliked(); // 播放模式设置
    void onPlayAll(PageType pageType);
    void playAllOfCommonPage(CommonPage* commonPage, int index);
    void playMusicByIndex(CommonPage* page, int index);
    void onCurrentIndexChanged(int index);
    void setMusicSilence(bool isMuted);
    void setPlayerVolume(int volume); // 设置⾳量⼤⼩
    void onDurationChanged(qint64 duration);//歌曲播放时间更新
    void onpositionChanged(qint64 position);// position: 媒体持续播放时间
    void onMusicSliderChanged(float value);//进度条改变
    void onMetaDataAvailableChangedChanged(bool available);
    void onLrcWordClicked(); // 歌词按钮槽函数
    void initSQLite();
    void iniMUsicList();
    void on_skin_clicked();
    void on_min_clicked();
    void updateBtformAnimal();
    void quitQQMusic();
private slots:
    void on_quit_clicked();
    void onBtFormClicke(int pageId);
    void on_volume_clicked();
    void on_addLocal_clicked();
    void onUpdateLikeMusic(bool isLike, QString musicId);
    void onPlayMusic();//播放按钮：歌曲在播放和暂停之间切换


protected:
    // 重写QWidget类的⿏标单击和⿏标滚轮事件
    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent* event);
    // 记录光标相对于窗⼝标题栏的相对距离
private:
    Ui::QQMusic *ui;
    QPoint dragPosition;
    VolumeTool*volumeTool;
    MusicList musicList;
    //播放器相关
    QMediaPlayer* player;
    // 要多⾸歌曲播放，以及更复杂的播放设置，需要给播放器设置媒体列表
    QMediaPlaylist* playList;
    CommonPage* curPage;
    qint64  totalTime;
    int currentIndex;
    LrcPage* lrcPage;
    QPropertyAnimation* lrcAnimation;
    QSqlDatabase sqlite;
    bool isDrag;


};
#endif // QQMUSIC_H
